<?php

namespace common\models\business;

use common\models\db\News;
use common\models\db\NewsCategory;
use common\models\output\Response;

class NewsCategoryBusiness {

    /**
     * Chi tiết newCate
     * @param type $id
     */
    public static function get($id) {
        return NewsCategory::findOne($id);
    }

    /**
     * Xóa newsCate hiện hành
     * @param type $id
     */
    public static function remove($id) {
        if (self::getParentId($id) != null) {
            return new Response(false, "Xóa danh mục con trước khi thực hiện thao tác này");
        }
        News::deleteAll(['categoryId' => $id]);
        return new Response(true, "Xóa danh mục tin tức thành công", NewsCategory::deleteAll(['id' => $id]));
    }

    /**
     * Lấy ra toàn bộ categoryNews
     * @return type
     */
    public static function getAll() {
        return NewsCategory::find()->all();
    }

    /**
     * Thay đổi trạng thái newsCategory
     * @param type $id
     * @return type
     */
    public static function changeActive($id) {
        $new = NewsCategory::findOne($id);
        if ($new == null) {
            return new Response(false, "Danh mục tin tức không tồn tại");
        }
        $new->active = $new->active == 1 ? 0 : 1;
        $new->save();
        return new Response(true, "Danh mục tin tức " . $new->name . $new->active ? "đã mở khóa" : "đã khóa", $new);
    }

    /**
     * Lấy ra toàn bộ categoryNews Active
     * @return type
     */
    public static function getAllActiveCategory() {
        return NewsCategory::find()->andWhere(['active' => 1])->all();
    }

    /**
     * Thay đổi trạng thái Navigator
     * @param type $id
     * @return type
     */
    public static function changeNavigator($id) {
        $new = NewsCategory::findOne($id);
        if ($new == null) {
            return new Response(false, "Danh mục tin tức không tồn tại");
        }
        $new->navigator = $new->navigator == 1 ? 0 : 1;
        $new->save();
        return new Response(true, "Danh mục tin tức " . $new->name . $new->navigator ? "đã mở khóa" : "đã khóa", $new);
    }

    public static function getParentId($id) {
        return NewsCategory::findAll(['parentId' => $id]);
    }

    /**
     * Thay đổi vị trí hiển thị
     * @param type $id
     * @return type
     */
    public static function changePosition($id, $postion) {
        $category = NewsCategory::findOne($id);
        if ($category == null) {
            return new Response(false, "Danh mục không tồn tại");
        }
        $category->position = $postion;
        $category->save();
        return new Response(true, "Thay đổi trạng thái hiển thị thành công", $category);
    }

    /**
     * Get By Alias
     * @return type
     */
    public static function getByAlias($alias) {
        return NewsCategory::findOne(["alias" => $alias]);
    }

    /**
     * Kiểm tra alias
     * @param type $alias
     * @return type
     */
    public static function exitsAlias($alias) {
        return NewsCategory::find(["alias" => $alias])->count() != 0;
    }

}
